
/* 用汇编写第一个点亮led的程序 */

.text  /* 代码段 */
.global _start

_start:
	/* 设置IO管脚复用 
	 * 向寄存器0x44E1086C(LED0)写入 (LED1 0x44E10878) (LED2 0x44E1087C) (LED3 0x44E10808)
	 * (7 | 0 | (1 << 18))
	 */
	ldr r1, =0x44E10878 /* LED1 */
	ldr r0, =0x00040007
	str r0, [r1] 
	
	ldr r1, =0x44E1087C /* LED2 */
	ldr r0, =0x00040007
	str r0, [r1]
	
	ldr r1, =0x44E10808 /* LED3 */
	ldr r0, =0x00040007
	str r0, [r1]
	
	/* 配置IO管脚为输出引脚 
	 * 将寄存器REG_GPIO1_BA(0x4804C000U + 0x134)的第28/29/2位清零
	 */
	ldr r1, =0x4804C134
	ldr r0, =0x0
	str r0, [r1] /* 将r0的值写入以r1值为地址的存储空间 */
	
	/* 向IO管脚写高电平
     * 将寄存器(0x4804C000U + 0x194)的第28/29/2位置1
     * 向IO管脚写低电平
     * 将寄存器(0x4804C000U + 0x190)的第28/29/2位置1	
     */
	ldr r1, =0x4804C190
	ldr r0, =0x30000004
	str r0, [r1]
	
/* 死循环 */	
halt:
	b halt